PyPI-এর মাধ্যমে পাইথন প্যাকেজ বিতরণের একটি সম্পূর্ণ নির্দেশিকা, যেখানে বিশ্বব্যাপী ডেভেলপারদের জন্য ভার্সন ম্যানেজমেন্ট, টুলস এবং ওয়ার্কফ্লো কভার করা হয়েছে।
পাইথন প্যাকেজ ডিস্ট্রিবিউশন: PyPI পাবলিশিং এবং ভার্সন ম্যানেজমেন্ট
পাইথনের সুবিশাল ইকোসিস্টেমটি প্যাকেজের এক বিশাল সংগ্রহের উপর ভিত্তি করে তৈরি, যা পাইথন প্যাকেজ ইনডেক্স (PyPI)-এর মাধ্যমে সহজেই উপলব্ধ। এই নির্দেশিকাটি PyPI-এর মাধ্যমে কীভাবে আপনার নিজের পাইথন প্যাকেজ বিতরণ করবেন তার একটি বিস্তারিত বিবরণ প্রদান করে, যাতে এটি বিশ্বব্যাপী ডেভেলপারদের কাছে অ্যাক্সেসযোগ্য হয়। আমরা প্রয়োজনীয় টুলস, ভার্সন ম্যানেজমেন্টের সেরা অনুশীলন এবং উচ্চ-মানের পাইথন প্যাকেজ তৈরি ও প্রকাশের জন্য ওয়ার্কফ্লো অন্বেষণ করব।
কেন আপনার পাইথন প্যাকেজ বিতরণ করবেন?
আপনার পাইথন প্যাকেজ বিতরণ করার অনেক সুবিধা রয়েছে:
- আপনার কাজ শেয়ার করা: অন্য ডেভেলপারদের সহজেই আপনার কোড পুনরায় ব্যবহার করার সুযোগ দেয়, যা সহযোগিতা এবং উদ্ভাবনকে উৎসাহিত করে। ভাবুন তো, বিশ্বজুড়ে একটি দল পাইথনে তৈরি আপনার বিশেষ ডেটা অ্যানালাইসিস টুল ব্যবহার করছে।
- ডিপেন্ডেন্সি ম্যানেজমেন্ট: অন্যান্য প্রজেক্টে ডিপেন্ডেন্সি পরিচালনার প্রক্রিয়াকে সহজ করে। আপনার প্যাকেজটি একটিমাত্র কমান্ডের মাধ্যমে ইনস্টল করা যায়, তার সমস্ত ডিপেন্ডেন্সি সহ।
- ওপেন সোর্স অবদান: আপনাকে ওপেন-সোর্স কমিউনিটিতে অবদান রাখতে এবং আপনার কাজের জন্য স্বীকৃতি পেতে সক্ষম করে। অনেক গুরুত্বপূর্ণ সফটওয়্যার কম্পোনেন্ট বিশ্বজুড়ে ডেভেলপারদের দ্বারা রক্ষণাবেক্ষণ করা ওপেন-সোর্স প্যাকেজ।
- ভার্সন কন্ট্রোল এবং আপডেট: ভার্সন পরিচালনা, আপডেট রিলিজ এবং বাগ সংশোধনের জন্য একটি কাঠামোবদ্ধ উপায় সরবরাহ করে। এটি নিশ্চিত করে যে ব্যবহারকারীরা সবসময় আপনার প্যাকেজের সর্বশেষ এবং সবচেয়ে নির্ভরযোগ্য ভার্সনটি ব্যবহার করতে পারে।
- সহজ ইনস্টলেশন: ব্যবহারকারীদের জন্য `pip install your-package-name` এর মাধ্যমে ইনস্টলেশন সহজ করে তোলে।
পাইথন প্যাকেজ বিতরণের জন্য প্রয়োজনীয় টুলস
পাইথন প্যাকেজ তৈরি এবং বিতরণের জন্য বেশ কিছু টুল অপরিহার্য:
- setuptools: প্যাকেজের মেটাডেটা, যেমন নাম, ভার্সন, ডিপেন্ডেন্সি এবং এন্ট্রি পয়েন্ট নির্ধারণের জন্য একটি বহুল ব্যবহৃত লাইব্রেরি। এটি পাইথন প্রজেক্ট প্যাকেজিংয়ের জন্য ডি ফ্যাক্টো স্ট্যান্ডার্ড।
- wheel: একটি ডিস্ট্রিবিউশন ফরম্যাট যা সোর্স ডিস্ট্রিবিউশনের তুলনায় আরও কার্যকর এবং নির্ভরযোগ্য ইনস্টলেশন প্রক্রিয়া প্রদান করে। হুইল হলো প্রি-বিল্ট ডিস্ট্রিবিউশন যা কম্পাইলেশনের প্রয়োজন ছাড়াই ইনস্টল করা যায়।
- twine: আপনার প্যাকেজকে নিরাপদে PyPI-তে আপলোড করার একটি টুল। টোয়াইন আপনার ক্রেডেনশিয়াল এবং প্যাকেজ ডেটা ট্রান্সমিশনের সময় এনক্রিপ্ট করে, যা ইভসড্রপিং এবং ম্যান-ইন-দ্য-মিডল অ্যাটাক থেকে রক্ষা করে।
- venv/virtualenv: এগুলি আইসোলেটেড পাইথন এনভায়রনমেন্ট তৈরি করার টুল। বিভিন্ন প্রজেক্টের মধ্যে ডিপেন্ডেন্সি পরিচালনা এবং সংঘাত এড়ানোর জন্য ভার্চুয়াল এনভায়রনমেন্ট ব্যবহার করা অত্যন্ত গুরুত্বপূর্ণ।
আপনার প্রজেক্ট সেট আপ করা
আপনার প্যাকেজ বিতরণ করার আগে, আপনাকে আপনার প্রজেক্টটি সঠিকভাবে কাঠামোবদ্ধ করতে হবে।
প্রজেক্ট স্ট্রাকচারের উদাহরণ
my_package/ ├── my_package/ │ ├── __init__.py │ ├── module1.py │ └── module2.py ├── tests/ │ ├── __init__.py │ ├── test_module1.py │ └── test_module2.py ├── README.md ├── LICENSE ├── setup.py └── .gitignore
ব্যাখ্যা:
- my_package/: মূল ডিরেক্টরি যেখানে আপনার প্যাকেজের সোর্স কোড রয়েছে।
- my_package/__init__.py: এটি `my_package` ডিরেক্টরিটিকে একটি পাইথন প্যাকেজ হিসেবে তৈরি করে। এটি খালি থাকতে পারে বা ইনিশিয়ালাইজেশন কোড ধারণ করতে পারে।
- my_package/module1.py, my_package/module2.py: আপনার পাইথন মডিউল যা আসল কোড ধারণ করে।
- tests/: একটি ডিরেক্টরি যেখানে আপনার ইউনিট টেস্টগুলো রয়েছে। আপনার প্যাকেজের গুণমান এবং নির্ভরযোগ্যতা নিশ্চিত করার জন্য টেস্ট লেখা অত্যন্ত জরুরি।
- README.md: একটি মার্কডাউন ফাইল যা আপনার প্যাকেজের বর্ণনা, ব্যবহারের নির্দেশাবলী এবং অন্যান্য প্রাসঙ্গিক তথ্য প্রদান করে। এটি প্রায়শই ব্যবহারকারীরা PyPI-তে প্রথম দেখে।
- LICENSE: একটি ফাইল যা লাইসেন্স ধারণ করে যার অধীনে আপনার প্যাকেজটি বিতরণ করা হয় (যেমন, MIT, Apache 2.0, GPL)। অন্যরা কীভাবে আপনার কোড ব্যবহার করতে পারে তা নির্দিষ্ট করার জন্য একটি উপযুক্ত লাইসেন্স বেছে নেওয়া অপরিহার্য।
- setup.py: প্রধান কনফিগারেশন ফাইল যা আপনার প্যাকেজের মেটাডেটা এবং বিল্ড নির্দেশাবলী নির্ধারণ করে।
- .gitignore: গিট দ্বারা উপেক্ষা করা উচিত এমন ফাইল এবং ডিরেক্টরি নির্দিষ্ট করে (যেমন, টেম্পোরারি ফাইল, বিল্ড আর্টিফ্যাক্ট)।
`setup.py` ফাইল তৈরি করা
`setup.py` ফাইলটি আপনার প্যাকেজ বিতরণের কেন্দ্রবিন্দু। এটি আপনার প্যাকেজ সম্পর্কে মেটাডেটা এবং এটি বিল্ড ও ইনস্টল করার নির্দেশাবলী ধারণ করে। এখানে একটি উদাহরণ দেওয়া হলো:
import setuptools
with open("README.md", "r") as fh:
long_description = fh.read()
setuptools.setup(
name="my_package", # আপনার প্যাকেজের নাম দিয়ে প্রতিস্থাপন করুন
version="0.1.0",
author="Your Name", # আপনার নাম দিয়ে প্রতিস্থাপন করুন
author_email="your.email@example.com", # আপনার ইমেল দিয়ে প্রতিস্থাপন করুন
description="একটি ছোট উদাহরণ প্যাকেজ",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/yourusername/my_package", # আপনার রিপোজিটরির URL দিয়ে প্রতিস্থাপন করুন
packages=setuptools.find_packages(),
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
python_requires='>=3.6',
install_requires=[
"requests", # উদাহরণস্বরূপ ডিপেন্ডেন্সি
],
)
ব্যাখ্যা:
- name: আপনার প্যাকেজের নাম, যা PyPI-তে ব্যবহৃত হবে। একটি অনন্য এবং বর্ণনামূলক নাম বেছে নিন।
- version: আপনার প্যাকেজের ভার্সন নম্বর। সিমান্টিক ভার্সনিং অনুসরণ করুন (নিচে দেখুন)।
- author, author_email: আপনার নাম এবং ইমেল ঠিকানা।
- description: আপনার প্যাকেজের একটি সংক্ষিপ্ত বিবরণ।
- long_description: একটি দীর্ঘ, আরও বিস্তারিত বিবরণ, যা সাধারণত আপনার `README.md` ফাইল থেকে পড়া হয়।
- long_description_content_type: আপনার দীর্ঘ বিবরণের ফরম্যাট নির্দিষ্ট করে (যেমন, "text/markdown")।
- url: আপনার প্যাকেজের হোমপেজের URL (যেমন, GitHub রিপোজিটরি)।
- packages: আপনার ডিস্ট্রিবিউশনে অন্তর্ভুক্ত করার জন্য প্যাকেজগুলির একটি তালিকা। `setuptools.find_packages()` স্বয়ংক্রিয়ভাবে আপনার প্রজেক্টের সমস্ত প্যাকেজ খুঁজে বের করে।
- classifiers: মেটাডেটা যা ব্যবহারকারীদের PyPI-তে আপনার প্যাকেজ খুঁজে পেতে সাহায্য করে। ট্রোভ ক্লাসিফায়ারের তালিকা থেকে উপযুক্ত ক্লাসিফায়ার বেছে নিন। সমর্থিত পাইথন ভার্সন, অপারেটিং সিস্টেম এবং লাইসেন্সের জন্য ক্লাসিফায়ার অন্তর্ভুক্ত করার কথা বিবেচনা করুন।
- python_requires: আপনার প্যাকেজ ব্যবহার করার জন্য প্রয়োজনীয় ন্যূনতম পাইথন ভার্সন নির্দিষ্ট করে।
- install_requires: আপনার প্যাকেজের জন্য প্রয়োজনীয় ডিপেন্ডেন্সিগুলির একটি তালিকা। এই ডিপেন্ডেন্সিগুলি আপনার প্যাকেজ ইনস্টল করার সময় স্বয়ংক্রিয়ভাবে ইনস্টল হয়ে যাবে।
ভার্সন ম্যানেজমেন্ট: সিমান্টিক ভার্সনিং
সিমান্টিক ভার্সনিং (SemVer) একটি বহুল প্রচলিত ভার্সনিং স্কিম যা আপনার প্যাকেজের পরিবর্তনগুলির প্রকৃতি পরিষ্কার এবং সামঞ্জস্যপূর্ণভাবে জানানোর একটি উপায় প্রদান করে।
একটি SemVer ভার্সন নম্বর তিনটি অংশ নিয়ে গঠিত: MAJOR.MINOR.PATCH।
- MAJOR: যখন আপনি ইনকমপ্যাটিবল API পরিবর্তন করেন তখন এটি বাড়ানো হয়। এটি একটি উল্লেখযোগ্য পরিবর্তন নির্দেশ করে যার জন্য ব্যবহারকারীদের তাদের কোড আপডেট করার প্রয়োজন হতে পারে।
- MINOR: যখন আপনি ব্যাকওয়ার্ডস কমপ্যাটিবল পদ্ধতিতে কার্যকারিতা যোগ করেন তখন এটি বাড়ানো হয়। এটি নতুন ফিচার বা উন্নতি নির্দেশ করে যা বিদ্যমান কোডকে ব্রেক করে না।
- PATCH: যখন আপনি ব্যাকওয়ার্ডস কমপ্যাটিবল বাগ ফিক্স করেন তখন এটি বাড়ানো হয়। এটি ছোটখাটো সংশোধনের জন্য যা নতুন ফিচার যোগ করে না বা বিদ্যমান কার্যকারিতা ব্রেক করে না।
উদাহরণ:
- 1.0.0: প্রাথমিক রিলিজ।
- 1.1.0: বিদ্যমান কোড ব্রেক না করে একটি নতুন ফিচার যোগ করা হয়েছে।
- 1.0.1: 1.0.0 রিলিজে একটি বাগ ফিক্স করা হয়েছে।
- 2.0.0: ইনকমপ্যাটিবল API পরিবর্তন করা হয়েছে।
SemVer ব্যবহার করলে ব্যবহারকারীরা আপনার প্যাকেজের নতুন ভার্সনে আপগ্রেড করার প্রভাব বুঝতে পারে।
আপনার প্যাকেজ বিল্ড করা
আপনার `setup.py` ফাইলটি কনফিগার করার পরে, আপনি আপনার প্যাকেজটি বিল্ড করতে পারেন।
- একটি ভার্চুয়াল এনভায়রনমেন্ট তৈরি করুন: আপনার প্যাকেজের ডিপেন্ডেন্সিগুলিকে আলাদা করার জন্য একটি ভার্চুয়াল এনভায়রনমেন্ট তৈরি করা অত্যন্ত সুপারিশ করা হয়। `python3 -m venv .venv` (বা `virtualenv .venv`) ব্যবহার করুন এবং তারপরে এটি সক্রিয় করুন (`source .venv/bin/activate` লিনাক্স/ম্যাকওএস-এ, `.venv\Scripts\activate` উইন্ডোজে)।
- বিল্ড ডিপেন্ডেন্সি ইনস্টল করুন: `pip install --upgrade setuptools wheel` চালান।
- প্যাকেজ বিল্ড করুন: `python setup.py sdist bdist_wheel` চালান। এই কমান্ডটি `dist` ডিরেক্টরিতে দুটি ডিস্ট্রিবিউশন ফাইল তৈরি করে: একটি সোর্স ডিস্ট্রিবিউশন (sdist) এবং একটি হুইল ডিস্ট্রিবিউশন (bdist_wheel)।
`sdist`-এ আপনার সোর্স কোড এবং `setup.py` ফাইল থাকে। `bdist_wheel` একটি প্রি-বিল্ট ডিস্ট্রিবিউশন যা আরও দ্রুত ইনস্টল করা যায়।
PyPI-তে আপনার প্যাকেজ প্রকাশ করা
আপনার প্যাকেজ প্রকাশ করার আগে, আপনাকে PyPI (https://pypi.org/)-তে একটি অ্যাকাউন্ট তৈরি করতে হবে এবং একটি API টোকেন তৈরি করতে হবে। এই টোকেনটি আপনার আপলোড প্রমাণীকরণের জন্য ব্যবহৃত হবে।
- PyPI-তে নিবন্ধন করুন: https://pypi.org/account/register/-এ যান এবং একটি অ্যাকাউন্ট তৈরি করুন।
- একটি API টোকেন তৈরি করুন: https://pypi.org/manage/account/-এ যান, "API tokens" বিভাগে স্ক্রোল করুন এবং একটি নতুন টোকেন তৈরি করুন। এই টোকেনটি নিরাপদে সংরক্ষণ করুন, কারণ আপনার প্যাকেজ আপলোড করার জন্য এটি প্রয়োজন হবে।
- Twine ইনস্টল করুন: `pip install twine` চালান।
- আপনার প্যাকেজ আপলোড করুন: `twine upload dist/*` চালান। আপনাকে আপনার ইউজারনেম (`__token__`) এবং পাসওয়ার্ড (আপনি যে API টোকেনটি তৈরি করেছেন) এর জন্য জিজ্ঞাসা করা হবে।
গুরুত্বপূর্ণ নিরাপত্তা নোট: আপনার রিপোজিটরিতে কখনোই আপনার API টোকেন কমিট করবেন না। এটি নিরাপদে সংরক্ষণ করুন এবং আপলোড প্রক্রিয়ার সময় এটি অ্যাক্সেস করার জন্য এনভায়রনমেন্ট ভেরিয়েবল বা অন্যান্য নিরাপদ পদ্ধতি ব্যবহার করুন।
আপনার প্যাকেজ ইনস্টলেশন পরীক্ষা করা
আপনার প্যাকেজ প্রকাশ করার পরে, এটি সঠিকভাবে ইনস্টল করা যায় কিনা তা পরীক্ষা করা অপরিহার্য।
- একটি নতুন ভার্চুয়াল এনভায়রনমেন্ট তৈরি করুন: এটি নিশ্চিত করে যে আপনি একটি পরিষ্কার পরিবেশে ইনস্টলেশন পরীক্ষা করছেন।
- আপনার প্যাকেজ ইনস্টল করুন: `pip install your-package-name` চালান।
- আপনার প্যাকেজ ইম্পোর্ট এবং ব্যবহার করুন: একটি পাইথন ইন্টারপ্রেটারে, আপনার প্যাকেজটি ইম্পোর্ট করুন এবং এটি প্রত্যাশা অনুযায়ী কাজ করছে কিনা তা যাচাই করুন।
কন্টিনিউয়াস ইন্টিগ্রেশন এবং কন্টিনিউয়াস ডিপ্লয়মেন্ট (CI/CD)
আপনার প্যাকেজ বিল্ড, পরীক্ষা এবং প্রকাশ করার প্রক্রিয়া স্বয়ংক্রিয় করতে, আপনি GitHub Actions, GitLab CI, বা Travis CI-এর মতো CI/CD টুল ব্যবহার করতে পারেন।
এখানে একটি GitHub Actions ওয়ার্কফ্লোর উদাহরণ দেওয়া হলো যা আপনার প্যাকেজটি বিল্ড করে এবং PyPI-তে প্রকাশ করে:
name: Publish to PyPI
on:
release:
types: [published]
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.x
uses: actions/setup-python@v2
with:
python-version: 3.x
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install setuptools wheel twine
- name: Build package
run: python setup.py sdist bdist_wheel
- name: Publish package to PyPI
run: |
twine upload dist/* \
-u __token__ \
-p ${{ secrets.PYPI_API_TOKEN }}
ব্যাখ্যা:
- এই ওয়ার্কফ্লোটি GitHub-এ একটি নতুন রিলিজ প্রকাশিত হলে ট্রিগার হয়।
- এটি কোড চেক আউট করে, পাইথন সেট আপ করে, ডিপেন্ডেন্সি ইনস্টল করে, প্যাকেজ বিল্ড করে এবং PyPI-তে আপলোড করে।
secrets.PYPI_API_TOKENএকটি GitHub সিক্রেট যা আপনার PyPI API টোকেন সংরক্ষণ করে। আপনাকে আপনার GitHub রিপোজিটরি সেটিংসে এই সিক্রেটটি কনফিগার করতে হবে।
পাইথন প্যাকেজ বিতরণের জন্য সেরা অনুশীলন
- বিস্তারিত ডকুমেন্টেশন লিখুন: একটি বিস্তারিত `README.md` ফাইল অন্তর্ভুক্ত করুন, পাশাপাশি Sphinx-এর মতো টুল ব্যবহার করে API ডকুমেন্টেশন তৈরি করুন। আপনার প্যাকেজটি ব্যবহার করা সহজ করার জন্য পরিষ্কার এবং সম্পূর্ণ ডকুমেন্টেশন অত্যন্ত গুরুত্বপূর্ণ।
- ইউনিট টেস্ট লিখুন: আপনার কোডের গুণমান এবং নির্ভরযোগ্যতা নিশ্চিত করতে এটি পুঙ্খানুপুঙ্খভাবে পরীক্ষা করুন। pytest বা unittest-এর মতো একটি টেস্টিং ফ্রেমওয়ার্ক ব্যবহার করুন।
- PEP 8 স্টাইল নির্দেশিকা অনুসরণ করুন: সামঞ্জস্যপূর্ণ এবং পঠনযোগ্য কোড নিশ্চিত করতে পাইথন এনহ্যান্সমেন্ট প্রোপোজাল 8 (PEP 8) স্টাইল গাইড মেনে চলুন।
- একটি লাইসেন্স ব্যবহার করুন: অন্যরা কীভাবে আপনার কোড ব্যবহার করতে পারে তা নির্দিষ্ট করার জন্য একটি উপযুক্ত ওপেন-সোর্স লাইসেন্স বেছে নিন।
- আপনার ডিপেন্ডেন্সিগুলি আপ-টু-ডেট রাখুন: বাগ ফিক্স, নিরাপত্তা প্যাচ এবং নতুন ফিচার থেকে সুবিধা পেতে আপনার প্যাকেজের ডিপেন্ডেন্সিগুলি নিয়মিত আপডেট করুন।
- ভার্চুয়াল এনভায়রনমেন্ট ব্যবহার করুন: ডিপেন্ডেন্সি আলাদা করতে সর্বদা একটি ভার্চুয়াল এনভায়রনমেন্টের মধ্যে আপনার প্যাকেজ ডেভেলপ এবং পরীক্ষা করুন।
- আন্তর্জাতিকীকরণ (i18n) এবং স্থানীয়করণ (l10n) বিবেচনা করুন: যদি আপনার প্যাকেজ ব্যবহারকারী-মুখী টেক্সট বা ডেটা পরিচালনা করে, তবে এটিকে বিভিন্ন ভাষা এবং অঞ্চলের সাথে খাপ খাইয়ে নেওয়ার কথা ভাবুন। এটি বিশ্বব্যাপী আপনার সম্ভাব্য ব্যবহারকারীর সংখ্যা বাড়াবে। Babel-এর মতো টুলস এতে সাহায্য করতে পারে।
- বিভিন্ন সময় অঞ্চল এবং মুদ্রা পরিচালনা করুন: যদি আপনার প্যাকেজ তারিখ, সময় বা আর্থিক লেনদেন নিয়ে কাজ করে, তবে বিশ্বজুড়ে বিভিন্ন সময় অঞ্চল এবং মুদ্রার বিষয়ে সচেতন থাকুন। এই জটিলতাগুলো সঠিকভাবে পরিচালনা করার জন্য উপযুক্ত লাইব্রেরি এবং API ব্যবহার করুন।
- পরিষ্কার ত্রুটি বার্তা প্রদান করুন: তথ্যপূর্ণ ত্রুটি বার্তা লিখুন যা ব্যবহারকারীদের বুঝতে সাহায্য করে কী ভুল হয়েছে এবং কীভাবে এটি ঠিক করা যায়। সম্ভব হলে এই ত্রুটি বার্তাগুলি বিভিন্ন ভাষায় অনুবাদ করুন।
- অ্যাক্সেসিবিলিটির কথা ভাবুন: আপনার প্যাকেজের ইন্টারফেস এবং ডকুমেন্টেশন ডিজাইন করার সময় প্রতিবন্ধী ব্যবহারকারীদের কথা বিবেচনা করুন। আপনার প্যাকেজটি যাতে সবাই ব্যবহার করতে পারে তা নিশ্চিত করার জন্য অ্যাক্সেসিবিলিটি নির্দেশিকা অনুসরণ করুন।
অ্যাডভান্সড টপিক
- নেমস্পেস প্যাকেজ: আপনাকে একটি একক পাইথন প্যাকেজকে একাধিক ডিরেক্টরি বা এমনকি একাধিক ডিস্ট্রিবিউশনে বিভক্ত করার অনুমতি দেয়।
- এন্ট্রি পয়েন্ট: আপনাকে এমন ফাংশন বা ক্লাস সংজ্ঞায়িত করার অনুমতি দেয় যা অন্য প্যাকেজ থেকে বা কমান্ড লাইন থেকে কল করা যায়।
- ডেটা ফাইল: আপনাকে আপনার ডিস্ট্রিবিউশনে নন-পাইথন ফাইল (যেমন, ডেটা ফাইল, কনফিগারেশন ফাইল) অন্তর্ভুক্ত করার অনুমতি দেয়।
- শর্তাধীন ডিপেন্ডেন্সি: আপনাকে এমন ডিপেন্ডেন্সি নির্দিষ্ট করার অনুমতি দেয় যা শুধুমাত্র নির্দিষ্ট শর্তে প্রয়োজন হয় (যেমন, একটি নির্দিষ্ট অপারেটিং সিস্টেমে)।
উপসংহার
PyPI-তে আপনার পাইথন প্যাকেজ বিতরণ করা আপনার কাজ বিশ্বের সাথে শেয়ার করার এবং পাইথন ইকোসিস্টেমে অবদান রাখার একটি দুর্দান্ত উপায়। এই নির্দেশিকায় বর্ণিত পদক্ষেপ এবং সেরা অনুশীলনগুলি অনুসরণ করে, আপনি উচ্চ-মানের পাইথন প্যাকেজ তৈরি এবং প্রকাশ করতে পারেন যা ইনস্টল করা, ব্যবহার করা এবং রক্ষণাবেক্ষণ করা সহজ। আপনার প্যাকেজের সাফল্য নিশ্চিত করতে পরিষ্কার ডকুমেন্টেশন, পুঙ্খানুপুঙ্খ টেস্টিং এবং সামঞ্জস্যপূর্ণ ভার্সন ম্যানেজমেন্টকে অগ্রাধিকার দিতে ভুলবেন না।